<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 全局作用域：任何不在函数中或者大括号中声明的变量，都在全局作用域下面
        let a = 1;
        function fun1(){
            console.log(a);
        }
        fun1();

        console.log('-----------------');

        // 函数作用域：
        function fun2(){
            let b = 20;
            console.log(b);
        }
        fun2();

        // 块级作用域(仅限let和const)
        if(1){
            let c = 1;
            console.log(c);
        }
        console.log(c);//c is not defined

        // 作用域链：js使用一个变量，首先js引擎会在当前作用域下查找，如果没有找到，去上层作用域寻找，以此类推，直到找到变量，如果到达全局作用域还是没找到，那么就会报错或者隐式声明
    </script>
</body>
</html>